/**
 * 封装的ajax get请求
 * @param url 请求url
 * @param params 请求参数
 * @param success 成功回调函数
 * @param error 失败回调函数
 * @param async 是否异步
 */
function ajaxGet(url, params, success, error, async = true) {
    $.ajax({
        type: "GET",
        url: url,
        data: params,
        cache: false,
        async: async,
        dataType: "json",
        processData: true,
        success: success,
        error: error
    });
}

/**
 * 封装的ajax post请求
 * @param url 请求url
 * @param params 请求参数
 * @param success 成功回调函数
 * @param error 失败回调函数
 * @param async 是否异步
 */
function ajaxPost(url, params, success, error, async = true) {
    $.ajax({
        type: "POST",
        url: url,
        data: params,
        async: async,
        cache: false,
        dataType: "json",
        processData: true,
        success: success,
        error: error
    });
}

/**
 * 错误回调函数
 * @param resp
 */
let error = (resp) => {
    // 请求有响应
    if (resp && resp.responseJSON) {
        let status = resp.status;
        let response = resp.responseJSON;

        if (status) {
            let message;

            if (status === 404) { // 404 not found
                if (response.path) {
                    message = "路径" + response.path + "不存在！";
                } else {
                    message = response.message;
                }
            } else {
                message = response.message;
            }

            $.messager.alert("系统提示", message, "error");
        } else {
            console.log("请求没有响应状态码！");
        }
    } else {
        console.log("请求无响应！");
    }
}

/**
 * 将数组转为JSON格式数据
 * @param array 数组
 */
function getJsonData(array) {
    let jsonData = [];

    for (let i = 0; i < array.length; i ++) {
        let elem = {
            value: i + "",
            text: array[i]
        };

        jsonData.push(elem);
    }

    return {
        code: 200,
        data: jsonData,
        message: "请求成功"
    };
}

/**
 * 渲染easyui combobox下拉框数组
 * @param selector 选择器
 * @param array 数组
 * @param width 组件宽度
 */
function fetchSelect(selector, array, width = 150) {
    $(selector).combobox({
        data: getJsonData(array),
        valueField: "value",
        textField: "text",
        width: width,
        required: true,
        panelHeight: "auto"
    });
}

/**
 * 渲染应用ID下拉框
 */
function fetchServiceId() {
    $("#serviceId").combobox({
        url: "/application/selectAll",
        valueField: "id",
        textField: "name",
        width: 150,
        required: true,
        panelHeight: "auto"
    });
}